#include <stdio.h>
#include "QUEUE.h"
/**
 * File: Exercise430.c
 * --------------------------------------
 * 练习4.30 Give the contents of `q[0], ... , q[4]` after the execution of the operations illustrated in Figure 4.6,
 * using Program 4.11. Assume that maxN is 10, as in Figure 4.8.
 * --------------------------------------
 * 编译：
 * gcc -o Exercise430 Exercise430.c ArrayQUEUE.c
 * --------------------------------------
 * q[0]:'T'
 * q[1]:'O'
 * q[2]:'U'
 * q[3]:'T'
 * q[4]:'T'
 */

 int main() {
    int maxN = 10;
    // 初始化队列
    QUEUEinit(10);

    // 输入序列：F I R S * T * I N * * * F I * R S * * * T * O U T * * * * *
    // 模拟操作
    
    // put 操作
    QUEUEput('F');
    QUEUEput('I');
    QUEUEput('R');
    QUEUEput('S');
    
    // get 操作（打印出 'F'）
    printf("%c ", QUEUEget());
    
    QUEUEput('T');
    
    // get 操作（打印出 'I'）
    printf("%c ", QUEUEget());
    
    QUEUEput('I');
    QUEUEput('N');
    
    // get 操作（打印出 'R'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'S'）
    printf("%c ", QUEUEget());
    
    // put 操作
    QUEUEput('F');
    QUEUEput('I');
    
    // get 操作（打印出 'T'）
    printf("%c ", QUEUEget());
    
    QUEUEput('R');
    QUEUEput('S');
    
    // get 操作（打印出 'I'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'N'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'F'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'I'）
    printf("%c ", QUEUEget());
    
    // put 操作
    QUEUEput('T');
    
    // get 操作（打印出 'R'）
    printf("%c ", QUEUEget());
    
    // put 操作
    QUEUEput('O');
    QUEUEput('U');
    QUEUEput('T');
    
    // get 操作（打印出 'S'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'T'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'O'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'U'）
    printf("%c ", QUEUEget());
    
    // get 操作（打印出 'T'）
    printf("%c ", QUEUEget());

    printf("\n");

    return 0;
}